import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// state在vuex中用于存储数据
var state={
    count:1,
    list:[]
}

// mutations里面放的是方法，方法主要用于改变state里面的数据
var mutations={
    incCount(){
        ++state.count;
    },
    // 如果要传值,必须带上state
    addList(state, data){
        console.log('data'+data);
        state.list=data;
    }
}

// getters 有点类似计算属性  (改变state里的count数据的时候会触发getters里的方法,获取新的值. 基本永不到)
var getters={
    computedCount:(state)=>{
        return state.count*2
    }
}

// actions 基本没有.类似mutation,不同的是它提交的是mutation,而不是直接变更状态. action可以包含任意异步操作.
var actions={
    incMutationsCount(context){
        context.commit('incCount') // 执行mutations力的incCount方法,改变state里的数据
    }
}


// 实例化Vuex.store
const store = new Vuex.Store({
    state,
    mutations,
    getters,
    actions
})

export default store;